Internationalization is the process of enabling a program to run internationally. That is, an internationalized program has the flexibility to run correctly in any country. Once a program has been internationalized, enabling it to run in a particular country and/or language is merely a matter of “localizing” it for that country and language, or locale.
One task in the process of internationalization is the translating of a program's user-visible interface into a local language. However, this is by no means the only operation required. Other concerns include displaying dates and times in the customary format for the locale, displaying number and currency values in the customary format for the locale, and sorting strings in the customary order for the locale.
Underlying all these localization issues is the even more fundamental issue of character encoding. Almost every useful program must perform input and output of text and, therefore, it is necessary to be able to adapt to local characterization standards.
Web-based user interfaces (hereinafter referred to as “WUI”) are often implemented in both HTML and JAVA. Each display consists of one or more components (i.e. HTML page/frame(s) and/or JAVA applet panel(s)). Translation in a WUI is complicated by the fact that these components are built at different times (i.e. HTML pages/frames are built by an application running on the web server prior to down-loading, while applet panels are constructed by Java code as it executes in memory on the end user's local machine.)
In summary, in order to be adaptable for distribution to international markets, a web page must be flexible enough to display messages (or any other type of user-visible text, such as labels on GUI buttons) to the user in an appropriate language and format for the current locale. Typically, this means that the program should not use hard-coded messages and must instead read in a set of messages at run time, based on the local setting. Java provides a way to do this for Java applets. In Java, messages are defined as key/value pairs in a “ResourceBundle” subclass. Then, a subclass of ResourceBundle is created for each language or locale that the application is intended to support, naming each class following a convention that includes the local name. At run-time, a ResourceBundle.getBundle( ) method is used to load the appropriate ResourceBundle class for the current locale. The ResourceBundle contains the messages which the application uses, each associated with a key which serves as the message name. Using this technique, the application can look up a locale dependent message translation based on a locale independent message name.
The above brief description of the problems associated with internationalization discloses that Java has provided some solutions for use within Java applets. However, to the inventor's knowledge, no corresponding solution exists for the HTML (“hyper-text markup language) encoded portions of an interface, which constitute the great majority of the most such user interfaces. To date, it has been required to provide a different HTML code for each language or variation of a user interface for which a target audience is desired.